- 原型模式
- 桥接模式 组合模式 享元模式
- 策略模式 模板方法模式 职责链模式
- •命令模式 备忘录模式 中介者模式
- 访问者模式 解释器模式


## 原型模式
概念: 
- clone 自己，生成一个新对象
- java 默认有 clone 接口，不用自己实现

JS中的应用 - Object.create
```js 
// 'Object.create' 用到了原型模式的思想 (虽然不是 java 中的 clone )
// 基于一个原型创建一个对象

var prototype = {
    getName: function(){
        return this.first + ' ' + this.last;
    }
    say: function(){
        console.log('hello');
    }
}


var x = Object.create(prototype);
x.first = 'a';
x.last = 'b';
console.log(x.getName());
x.say();

// 基于原型创建y 
var y = Object.create(prototype);
y.first = 'a';
y.last = 'b';
console.log(y.getName());
y.say();
```






## 桥接模式

### 概念
- 用于把抽象化与实现化解耦
- 使得二者可以独立变化
- 未找到JS 中的经典应用

- 设计原则验证
    - 抽象和实现分离，解耦
    - 符合开放封闭原则




## 享元模式
### 概念
- 共享内存（主要考虑内存，而非效率）
- 相同的数据，共享使用
- JS 中末找到经典应用场景

- 设计原则验证
    - 将相同的部分抽象出来
    - 符合开放封闭原则




## 策略模式
### 概念
- 不同策略分开处理
- 避免出现大量 if..else 或者 switch...case
- JS 中未找到经典应用场景

- 设计原则验证
    - 不同策略，分开处理，而不是混合在一起
    - 符合开放封闭原则



## 职责链模式
### 概念
- 一步操作可能分位多个职责角色来完成
- 把这些角色都分开 ，然后用一个链串起来
- 将发起者和各个处理者进行隔离

- 设计原则验证
    - 发起者于各个处理者进行隔离
    - 符合开放封闭原则



## 命令模式
### 概念
- 执行命令时，发布者和执行者分开
- 中间加入命令对象，作为中转站



- 设计原则验证
    - 命令对象于执行对象分开，解耜
    - 符合开放封闭原则


## 备忘录模式
### 概念
- 随时记录一个对象的状态变化
- 随时可以恢复之前的某个状态（如撤销功能）
- 末找到 JS 中经典应用，除了一些工具（如编辑器）



- 设计原则验证
    - 状态对象于使用者分开，解轉
    - 符合开放封闭原则



## 中介者模式
### 概念

- 设计原则验证
    - 讲各关联对象通过中介者隔离
    - 符合开放封闭原则



## 访问者模式
### 概念
- 将数据操作和数据结构进行分离
- 使用场景不多


## 解释器模式
### 概念
- 描述语言语法如何定义，如何解释和编译
- 用于专业场景